<html>
<head>
<title>tooLAME changes</title>
<style>	
<!-- BODY { BACKGROUND: #FFFFFF; COLOR: #000000; FONT-SIZE: 10pt; FONT-FAMILY: verdana, sans-serif }
	A { COLOR: #111177;  TEXT-DECORATION: none }
       TD { font-size: medium; font-weight:normal }
--!>
</STYLE>
</head>
<body>
<table border = 0 width="75%" align="center"><tr><td>
<h1>TooLAME 02l - 2 March 2003</h1>
<UL>
<LI> <b>Major psychoacoustic model overhauls</b>
<UL>
   <LI> For more detail, see <a href="psycho.html">psycho models</a>
   <LI> <b>Psychoacoustic Model 3</b>
   <UL>
       <LI> Psycho3 is a reimplementation of the psychoacoustic model 1 from the
            ISO standard. Pretty much totally rewritten from the ground up, following the nomenclature of the ISO standard.
       <LI> Uses arrays for keeping tone/noise labels rather than the really 
            hard to grok pointer-stuff from the dist10 code.
       <LI> Uses Painter + Spanias' Formula for the ATH rather than the tables from the standard.
       <LI> Uses LAME's freq-to-bark conversion to construct the critical bands.
       <LI> Future: Needs a proper geometric mean for weighting the noise. Needs one more function added to the decimation routines which would eliminate maskers within 0.5 dB of each other.
       <LI> Eliminated all the ISO/dist10 tables. Everything is from equations or built from scratch.
   </ul>
   <LI> <b>Psychoacoustic Model 4</b>
   <UL>
       <LI> A reimplementation of psychoacoustic model 2.
       <LI> Eliminated all the ISO/dist10 tables. Everything (ath, bark, critical bands) is from equations or built from scratch
       <LI> FUTURE: For psycho model 2 and 4 there's some really bad "warbling" and "Davros" type noise.  Depending on the loudness of your sound sample, this can get really annoying. I don't know where it's coming from.
   </ul>
   <LI> <b>Psychoacoustic Model 0</b>
   <UL>
        <LI> This model uses the ATH and the scalefactors for each subband to build an approximate SMR for each subband at nearly zero cost.
        <LI> Based upon an idea mentioned in "Low power mpeg/audio encoders using simplified psychoacoustic model and fast bit allocation" by Hyen-O Oh et al.
        <LI> For the amount of effort that this psycho model puts in, the results are pretty good.
        <LI> Future: Add some parameters to the equation to allow it to be tweaked on the fly.
   </UL>
   <LI> <b>Psychoacoustic Model -1</b>
   <UL>
        <LI> This is the old "fast" psychoacoustic model ("-f").
        <LI> All it does is copy over a static set of pre-calculated SMR values
        <LI> Sounds OK for most stuff.
   </UL>
</UL>
<LI> <b>New bitstream encoding routines (encode_new.c)</b>
<UL>
    <LI> All the old tables.c/alloc_table stuff is now superfluous.
    <LI> All tables are now at the top of encode_new.c
    <LI> The tables have quite a bit of indirection to get to the value that you need (but really not any more indirection than the old alloc_table stuff). Probably need to add some more docs to say what's going on.
    <LI> These new routines are the default, but you can remove the "NEWENCODE" definition and use the old ones (just in case).
    <LI> The new routines will become the default in the next release.
</UL>
<LI> <b>More speed</b>
<UL>
<LI> All the trig stuff for psychomodel 4 is now done with tables instead of calculating exact values.
<LI> The <i>exact</i> trig values aren't really used directly in the encoder. They're sort of averaged over a couple of iterations and used as a predictor of uncertainty. So being off a few thousandths won't really affect anything.
</UL>
</UL>
<HL>
<h1>TooLAME 02k - 16 February 2003</h1>
<UL>
<LI> Some great speedups with a combined  filtersubband and windowsubband (Ricardo Schelp ricardoschelp at arnet.com.ar)
<LI> Cleaned up the psycho model calling (should be easier to add your own psycho 
model if you felt like having a hack) 
<LI> DAB Extensions are now of variable length controlled by an argument to the -D switch
	  (Nicolas Croiset - ncroiset at vdl.fr)
<LI> Fixed raw PCM reading to no longer miss the first 40 bytes. (MFC)
<LI> No longer a 4GB limit when reading from stdin (or if your filesys supports)  (Nicolas)
<LI> Tweaks to the end of the bitstream to allow concatentation of mp2 files (Nicolas)
<LI> Finally (?) fixed the segfaults using psy model 1 (Nicolas et al)
</ul>
<HL>
<h1>TooLAME 02j - 12 Feb 2003</h1>
<UL>
<LI>Definitely LGPL now. 

<LI>encode.c - VBR mode has been stabilised to work correctly for all sampling frequencies (<a href="vbr.html">README.VBR</a> has more details)

<LI>get_audio.c has become audio_read.c	- cleaned up that really dodgy wave header parsing.   
(thanks to Philippe Jouguet - philippe.jouguet at vdl.fr  and Henrik Herranen - leopold at vlsi.fi)

<LI>spelling fix for 'extension' - Philippe again

<LI>psycho_I.c - Speedup for "% 1408" calcs "-DSAMI_P1" sami.sallinen at g-cluster.com
	(about 4% overall speedup for me)

<LI>subband.c - Pointer arithmetic for filter subband "-DSAMI_SB" (sami again)
	(doesn't give any advantage over gcc3.2 on my system)

<LI>psycho_II.c
<UL>
	<LI> enabled the use of gcc's _sincos(). "-DSINCOS -D_GNU_SOURCE"
		about a 5% overall speed-up in encoding (Philippe again)
	<LI> added the LSF frequencies so that you can use psy model 2 with LSF (good old Philippe)
</UL>
<LI>verbosity - added a '-t' flag to set the 'talkativity' level needed for transcode plugin (Andreas neukoetter - anti at webhome.de)

<LI>toolame.c - LSF files should now select a valid default bitrate by default. (96kbps)
	
</li>
</tr></td>
</body>
</html>
